<?php

class GoodsController extends CommonController{
	
	//设置模板属性
	private $_model;
	//设置公共属性
	public function __init(){
		//给文章模板扩展一下
		$this->_model = K('Goods');
	}
	
		
	//..............显示控制器.............
	public function index(){
		//......查找模型里所有的数据
		$data = $this->_model->get_all_data(NULL,true);
		//分配数据
		$this->assign('page',$data['page']);
		//删除掉它，要不循环会有问题
		unset($data['page']);
		//分配数据
		$this->assign('data',$data);
		//显示模板
		$this->display();
	}
	
	
	//........添加商品.........
	public function add(){
		if(IS_POST){
//			p(Q('post.'));die;
			//如果不符合模板规则判断 则反出模板相应的错误信息
			if($this->_model->add_data()){
				$this->success('添加成功');
			}else{
				//反之就是添加失败
				$this->error($this->_model->error);
			}

		
		}
		//拿到所有分类  获得旧的分类全部数据
		$cateData = K('Category')->get_all_data();
		//分配分类数据的的变量
		$this->assign('cateData',$cateData);
		
		//拿到所有品牌全部数据		
		$brandData = K('Brand')->get_all_data(); 
		//分配品牌数据的的变量
		$this->assign('brandData',$brandData);
					
		$this->display();
		
	}
	
	
	
	
	
	
	
	//...............删除方法............
	
	public function del(){
		//判断一下通过模板规则的GET过来的删除数据里的gid  如果不传就默认为0  intval
		$this->_model->del_data(Q('get.gid',0,'intval'));
				//符合就删除成功
//				$this->success('删除成功');
			
				
	}
	
	
	
	//...........修改...................
		public function edit(){
			if(IS_POST){
				if($this->_model->update_data(Q('gid',0,'intval'))){
					$this->success('修改成功');
				}
			 	$this->error($this->_model->error);
			}
			
			//获取GID
			$gid = Q('get.gid',0,'intval');
			//获得旧数据，并且压入到一个变量里面
			$old = $this->_model->get_all_data(array('gid'=>$gid));
			//分配数据
			$this->assign('old',$old);
			
			//拿到所有分类  获得旧的分类全部数据
			$cateData = K('Category')->get_all_data();
			//分配分类数据的的变量
			$this->assign('cateData',$cateData);
			//拿到商品属性所有属性
			$comData = K('Comproperty')->get_all_data();
			//分配商品属性数据的的变量
			$this->assign('comData',$comData);			
			//拿到商品属性所有属性
			$brandData = K('Brand')->get_all_data();
			//分配商品属性数据的的变量
			$this->assign('brandData',$brandData);			
			//拿到商品属性所有属性
			$goodsdetData = K('Goodsdet')->get_all_data();
			//分配商品属性数据的的变量
			$this->assign('goodsdetData',$goodsdetData);
						
			$this->display();
		}
	
	
	
	
	
	
	
	// .....................上传方法..................
	public function upload(){	
		
		// 实例化 上传类 走配置项的上传路径
		$upload = new Upload();
		// 如果上传成功会返回路径信息等
		//实施上传类上传方法
		if(!$file=$upload->upload()){
			// 如果上传失败$file为false
			// ajax 返回相关信息。错误信息存在error属性里面
			$this->ajax(array(
					'status' => 0,
					'msg'    => $upload->error
			));
		}else{
			// 实例化图片缩略对象 为的是同时压缩图片
			$img = new Image();
			// 定义数组 用于接收 图片路径等信息
			$data = array(
				// 状态值为1
				'status' =>1
			);
			// 如果表达式为真说明这个时候需要生成三张缩略图
			if(Q("get.multi",0,"intval")){
				// upload/www/111.jpg
				// 获得文件路径 ，及basename 及扩展名的数组
				$path_info = pathinfo($file[0]['path']);
				/*
// Array
// (
//     [dirname] =>upload/www   路径
//     [basename] => 111.jpg  文件名
//     [extension] => jpg   扩展名 格式
//     [filename] => 111 
// )
				 */				
				// 需要生成 3种规格的图片。
				$pics = array(
					"580"   		=>"big_".$path_info['basename'],
					"110"			=>"small_".$path_info['basename']
				);
				// 循环遍历这三种类型的图片
				foreach ($pics as $k =>$name) {
					// upload/www/big_23234923984.jpg
					$new_file = $path_info['dirname'].'/'.$name;
					// 配置缩略图的输出路径，及宽，高，缩略的方法
					$img->thumb($file[0]['path'],$new_file,$k,$k,1);
					// 判断如果是800的尺寸则把图片路径压入到$data['big']
					switch ($k) {
						case 580:
							$data['big'] = $new_file;
						break;
						case 110:
							$data['small'] = $new_file;
							break;
						default:
							$data['big'] = $new_file;
						break;
					}
				}
				// 删除原图
//				unlink($file[0]['path']);			
			}else{
				// 执行缩略方法 返回地址
				$info = $img->thumb($file[0]['path']);
				// 组合需要返回的数据
				$data = array(
					'status' => 1,
					'name' => $info
				);
			}
			// 返回图片相对路径
			$this->ajax($data);
		}
	}
	
}
